package com.chenjun.designpattern.behavior.command;

public class Andriod源码解释回调 {
    public static void main(String[] args) {
        Button button = new Button();
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("匿名内部类实现回调");
            }
        });
        button.performClick();
    }
}

interface OnClickListener {
    void onClick(View v);
}

abstract class Activity {
    public abstract void onCreate();
}

class MainActivity extends Activity implements OnClickListener {
    /**
     * Class A 包含Class B的引用----->背景二
     */
    private Button button;

    @Override
    public void onCreate() {
        /**
         * Class A 调用View的方法,而Button extends View----->A类调用B类的某个方法 C
         */
        button.setOnClickListener(this);
    }

    /**
     * 用户点击Button时调用的回调函数，你可以做你要做的事 这里我做的是用Toast提示OnClick
     */
    @Override
    public void onClick(View v) {
        System.out.println("执行了OnClick()的具体动作.");
    }
}

class View {
    protected OnClickListener onClickListener;

    /**
     * @param onClickListener
     */
    public void setOnClickListener(OnClickListener onClickListener) {
        this.onClickListener = onClickListener;
    }

    /**
     * 重要
     */
    public void performClick() {
        onClickListener.onClick(this);
    }
}

class Button extends View {
    //集成了VIEW的成员变量和方法
}
